<?php

/**
 * 格式化打印数组
 * @param type $array 需要打印的数组
 */
function p($array) {
    header("Content-type:text/html;charset=utf-8");
    dump($array, 1, '<pre>', 0);
}

/**
 * 将返回的数据集转换成树
 * @param  array   $list  数据集
 * @param  string  $pk    主键
 * @param  string  $pid   父节点名称
 * @param  string  $child 子节点名称
 * @param  integer $root  根节点ID
 * @return array          转换后的树
 */
function list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0) {
    $tree = array(); // 创建Tree
    if (is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] = & $list[$key];
        }

        foreach ($list as $key => $data) {
            // 判断是否存在parent
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[$data[$pk]] = & $list[$key];
            } else {
                if (isset($refer[$parentId])) {
                    $parent = & $refer[$parentId];
                    $parent[$child][] = & $list[$key];
                }
            }
        }
    }
    return $tree;
}

function getRandChar($length) {
    $str = null;
    $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($strPol) - 1;

    for ($i = 0; $i < $length; $i++) {
        $str.=$strPol[rand(0, $max)]; //rand($min,$max)生成介于min和max两个数之间的一个随机整数
    }

    return $str;
}

function HTMLFilter($dirty_html) {
    vendor('htmlpurifier.library.HTMLPurifier#auto');
    $config = HTMLPurifier_Config::createDefault();

    //$config->set('HTML.Allowed', '');//去除所有HTML标签
    //保留超链接标签a及其href链接地址属性，并自动添加target属性值为’_blank’
    //$config->set('HTML.Allowed', 'a[href]');
    //$config->set('HTML.TargetBlank', true);
    // 让文本自动添加段落标签，前提是必须允许P标签的使用
    //$config->set('HTML.Allowed', 'p');
    $config->set('AutoFormat.AutoParagraph', true);
// 清除空标签
    $config->set('AutoFormat.RemoveEmpty', false, false);
    $config->set('AutoFormat.RemoveEmpty.RemoveNbsp', true, false);
    $config->set('core.normalizenewlines',false);
    $config->set('URI.Disable', true, false);
    $purifier = new HTMLPurifier($config);

    $clean_html = $purifier->purify($dirty_html);

    return $clean_html;
}

?>
